#ifndef EDITORCORE_ACTION_H
#define EDITORCORE_ACTION_H

#include "EditorCore/Actions/IAction.h"

namespace editor_core {

	class Action : public IAction
	{
	protected:
		Action();

	public:
		virtual ~Action() {}

	public:
		virtual bool Do();
		virtual void Undo();
		virtual void Redo();

	protected:
		virtual bool Commit() = 0;
		virtual void Recommit() = 0;
		virtual void Rollback() = 0;

	private:
		bool m_isDone;
	};
}

#endif
